package es.ocu.uxxiac.appnotas.content;

import java.util.ArrayList;
import java.util.List;
import java.util.jar.Attributes;

import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class CalificacionesHandler extends DefaultHandler {
    private ArrayList<Calificacion> calificaciones;
    private Calificacion calificacionActual;
    private StringBuilder sbTexto;
	private String plan;
	private String convocatoria;
 
    public ArrayList<Calificacion> getCalificaciones(){
        return calificaciones;
    }
 
    @Override
    public void characters(char[] ch, int start, int length)
                   throws SAXException {
 
        super.characters(ch, start, length);
 
        if (this.calificacionActual != null)
        	sbTexto.append(ch, start, length);
    }
 
    @Override
    public void endElement(String uri, String localName, String name)
                   throws SAXException {
 
        super.endElement(uri, localName, name);
 
        if (this.calificacionActual != null) {
        	if(null!=sbTexto&&!"".equals(sbTexto)&&!"\\n\\t\\t\\t\\t".equals(sbTexto.toString())){
	            if (localName.equals("CREDITOS")) {
	                calificacionActual.setCreditos(sbTexto.toString());
	            } else if (localName.equals("CREDITOSECTS")) {
	                calificacionActual.setCreditos_ects(sbTexto.toString());
	            } else if (localName.equals("TIPO")) {
	            	calificacionActual.setTipo(sbTexto.toString());
	            } else if (localName.equals("CALIFICACION")) {
	            	calificacionActual.setCalificacion(sbTexto.toString());
	            } else if (localName.equals("INCOMPATIBLE")) {
	            	calificacionActual.setIncompatible(sbTexto.toString());
	            } else if (localName.equals("NOTA")) {
	                calificacionActual.setNota(sbTexto.toString());
	            } else if (localName.equals("DEFINITIVA")) {
	            	calificacionActual.setDefinitiva(sbTexto.toString());
	            } else if (localName.equals("OBSERVACIONES")) {
	                calificacionActual.setObservaciones(sbTexto.toString());
	            } else if (localName.equals("CALIFICACION")) {
	                calificacionActual.setCalificacion(sbTexto.toString());
	            } else if (localName.equals("ASIGNATURA")) {
	                calificaciones.add(calificacionActual);
	            }
	            sbTexto.setLength(0);
        	}
        }
    }
 
    @Override
    public void startDocument() throws SAXException {
 
        super.startDocument();
 
        calificaciones = new ArrayList<Calificacion>();
        sbTexto = new StringBuilder();
    }

	@Override
	public void startElement(String uri, String localName, String qName,
			org.xml.sax.Attributes attributes) throws SAXException {
		// TODO Auto-generated method stub
		super.startElement(uri, localName, qName, attributes);
		if (localName.equals("PLAN")) {
			plan = attributes.getValue("VALOR");
		}
		if (localName.equals("CONVOCATORIA")) {
			convocatoria = attributes.getValue("VALOR");
		}
        if (localName.equals("ASIGNATURA")) {
            calificacionActual = new Calificacion();
            calificacionActual.setAsignatura(attributes.getValue("NOMBRE"));
            calificacionActual.setInfo(attributes.getValue("INFO"));
            calificacionActual.setConvocatoria(convocatoria);
            calificacionActual.setPlan(plan);
        }
	}
 

}
